






      module mo_prod_loss

      use shr_kind_mod, only : r8 => shr_kind_r8

      private
      public :: exp_prod_loss
      public :: imp_prod_loss

      contains

      subroutine exp_prod_loss( prod, loss, y, rxt, het_rates )

      use ppgrid, only : pver

      implicit none

!--------------------------------------------------------------------
! ... dummy args
!--------------------------------------------------------------------
      real(r8), dimension(:,:,:), intent(out) :: &
            prod, &
            loss
      real(r8), intent(in) :: y(:,:,:)
      real(r8), intent(in) :: rxt(:,:,:)
      real(r8), intent(in) :: het_rates(:,:,:)



!--------------------------------------------------------------------
! ... loss and production for Explicit method
!--------------------------------------------------------------------


         loss(:,:,1) = ((rxt(:,:,80) +rxt(:,:,81) +rxt(:,:,82))* y(:,:,3) &
                  +rxt(:,:,122)* y(:,:,20) +rxt(:,:,276)* y(:,:,25) + rxt(:,:,17) &
                  + rxt(:,:,18) + het_rates(:,:,12))* y(:,:,12)
         prod(:,:,1) = 0._r8
         loss(:,:,2) = ((rxt(:,:,78) +rxt(:,:,79))* y(:,:,3) + rxt(:,:,4) &
                  + het_rates(:,:,4))* y(:,:,4)
         prod(:,:,2) = 0._r8
         loss(:,:,3) = ((rxt(:,:,129) +rxt(:,:,130))* y(:,:,20) + het_rates(:,:,17)) &
                 * y(:,:,17)
         prod(:,:,3) =.380_r8*rxt(:,:,18)*y(:,:,12) +rxt(:,:,312)*y(:,:,39)*y(:,:,25) &
                  +rxt(:,:,70)*y(:,:,128)
         loss(:,:,4) = (rxt(:,:,77)* y(:,:,3) +rxt(:,:,94)* y(:,:,20) +rxt(:,:,271) &
                 * y(:,:,25) + het_rates(:,:,18))* y(:,:,18)
         prod(:,:,4) = (1.440_r8*rxt(:,:,18) +rxt(:,:,82)*y(:,:,3))*y(:,:,12)
         loss(:,:,5) = (rxt(:,:,313)* y(:,:,20) +rxt(:,:,312)* y(:,:,25) + rxt(:,:,60) &
                  + het_rates(:,:,39))* y(:,:,39)
         prod(:,:,5) = 0._r8
         loss(:,:,6) = (rxt(:,:,267)* y(:,:,3) +rxt(:,:,316)* y(:,:,20) + rxt(:,:,67) &
                  + het_rates(:,:,40))* y(:,:,40)
         prod(:,:,6) = 0._r8
         loss(:,:,7) = (rxt(:,:,262)* y(:,:,3) + rxt(:,:,63) + het_rates(:,:,41)) &
                 * y(:,:,41)
         prod(:,:,7) = 0._r8
         loss(:,:,8) = (rxt(:,:,263)* y(:,:,3) + rxt(:,:,64) + het_rates(:,:,42)) &
                 * y(:,:,42)
         prod(:,:,8) = 0._r8
         loss(:,:,9) = (rxt(:,:,264)* y(:,:,3) + rxt(:,:,65) + het_rates(:,:,43)) &
                 * y(:,:,43)
         prod(:,:,9) = 0._r8
         loss(:,:,10) = (rxt(:,:,265)* y(:,:,3) +rxt(:,:,315)* y(:,:,20) + rxt(:,:,66) &
                  + het_rates(:,:,44))* y(:,:,44)
         prod(:,:,10) = 0._r8
         loss(:,:,11) = (rxt(:,:,266)* y(:,:,3) + rxt(:,:,61) + het_rates(:,:,45)) &
                 * y(:,:,45)
         prod(:,:,11) = 0._r8
         loss(:,:,12) = (rxt(:,:,314)* y(:,:,20) + rxt(:,:,62) + het_rates(:,:,46)) &
                 * y(:,:,46)
         prod(:,:,12) = 0._r8
         loss(:,:,13) = (rxt(:,:,269)* y(:,:,3) + rxt(:,:,68) + het_rates(:,:,47)) &
                 * y(:,:,47)
         prod(:,:,13) = 0._r8
         loss(:,:,14) = (rxt(:,:,268)* y(:,:,3) + rxt(:,:,69) + het_rates(:,:,48)) &
                 * y(:,:,48)
         prod(:,:,14) = 0._r8
         loss(:,:,15) = ( + rxt(:,:,70) + het_rates(:,:,128))* y(:,:,128)
         prod(:,:,15) = (rxt(:,:,129)*y(:,:,20) +rxt(:,:,130)*y(:,:,20))*y(:,:,17) &
                  +.440_r8*rxt(:,:,18)*y(:,:,12)
         loss(:,:,16) = ( + het_rates(:,:,23))* y(:,:,23)
         prod(:,:,16) = 0._r8
         loss(:,:,17) = ( + het_rates(:,:,24))* y(:,:,24)
         prod(:,:,17) = 0._r8
         loss(:,:,18) = ( + rxt(:,:,250) + het_rates(:,:,126))* y(:,:,126)
         prod(:,:,18) = 0._r8
         loss(:,:,19) = ( + het_rates(:,:,127))* y(:,:,127)
         prod(:,:,19) =rxt(:,:,250)*y(:,:,126)

      end subroutine exp_prod_loss

      subroutine imp_prod_loss( prod, loss, y, rxt, het_rates )

      use ppgrid, only : pver

      implicit none

!--------------------------------------------------------------------
! ... dummy args
!--------------------------------------------------------------------
      real(r8), dimension(:), intent(out) :: &
            prod, &
            loss
      real(r8), intent(in) :: y(:)
      real(r8), intent(in) :: rxt(:)
      real(r8), intent(in) :: het_rates(:)



!--------------------------------------------------------------------
! ... loss and production for Implicit method
!--------------------------------------------------------------------


         loss(105) = (rxt(72)* y(2) +rxt(107)* y(6) +rxt(110)* y(7) +rxt(85)* y(19) &
                  +rxt(90)* y(20) +rxt(99)* y(21) +rxt(270)* y(25) +rxt(296)* y(34) &
                  +rxt(143)* y(51) +rxt(167)* y(62) +rxt(213)* y(79) +rxt(189)* y(82) &
                  +rxt(195)* y(83) +rxt(245)* y(92) + rxt(2) + rxt(3) + het_rates(1)) &
                 * y(1)
         prod(105) = (.200_r8*rxt(189)*y(82) +.200_r8*rxt(195)*y(83) + &
                 .100_r8*rxt(213)*y(79))*y(1) + (.250_r8*rxt(154)*y(60) + &
                 .250_r8*rxt(205)*y(86))*y(21) +rxt(71)*y(2)
         loss(108) = (rxt(72)* y(1) + 2._r8*rxt(73)* y(2) +rxt(105)* y(6) &
                  + (rxt(108) +rxt(109))* y(7) +rxt(116)* y(8) +rxt(128)* y(16) &
                  +rxt(89)* y(20) +rxt(98)* y(21) +rxt(101)* y(22) +rxt(277)* y(27) &
                  +rxt(289)* y(30) +rxt(290)* y(31) +rxt(293)* y(32) +rxt(299)* y(35) &
                  +rxt(309)* y(36) +rxt(310)* y(37) +rxt(311)* y(38) + rxt(71) &
                  + het_rates(2))* y(2)
         prod(108) = (rxt(102) +rxt(103)*y(6) +rxt(104)*y(7))*y(5) + (rxt(74) + &
                 rxt(75))*y(3) +rxt(3)*y(1) +rxt(5)*y(6) +rxt(6)*y(7) +rxt(10)*y(8) &
                  +rxt(8)*y(11) +rxt(88)*y(21)*y(19) +rxt(92)*y(20)*y(20) +rxt(49) &
                 *y(28) +rxt(56)*y(35) +rxt(46)*y(49)
         loss(76) = ((rxt(78) +rxt(79))* y(4) + (rxt(80) +rxt(81) +rxt(82))* y(12) &
                  +rxt(77)* y(18) +rxt(267)* y(40) +rxt(262)* y(41) +rxt(263)* y(42) &
                  +rxt(264)* y(43) +rxt(265)* y(44) +rxt(266)* y(45) +rxt(269)* y(47) &
                  +rxt(268)* y(48) +rxt(76)* y(49) +rxt(83)* y(129) + rxt(74) &
                  + rxt(75) + het_rates(3))* y(3)
         prod(76) =rxt(2)*y(1) +rxt(45)*y(49)
         loss(32) = (rxt(103)* y(6) +rxt(104)* y(7) + rxt(102) + het_rates(5))* y(5)
         prod(32) =rxt(5)*y(6)
         loss(106) = (rxt(107)* y(1) +rxt(105)* y(2) +rxt(103)* y(5) +rxt(115)* y(8) &
                  +rxt(123)* y(13) +rxt(106)* y(21) +rxt(281)* y(27) +rxt(302)* y(35) &
                  +rxt(158)* y(53) +rxt(145)* y(57) +rxt(152)* y(60) +rxt(169)* y(64) &
                  +rxt(174)* y(66) +rxt(178)* y(69) +rxt(187)* y(72) +rxt(191)* y(74) &
                  +rxt(228)* y(77) +rxt(215)* y(80) + (rxt(196) +rxt(197))* y(84) &
                  +rxt(203)* y(86) +rxt(231)* y(90) +rxt(247)* y(93) +rxt(239)* y(97) &
                  +rxt(221)* y(105) +rxt(138)* y(133) + rxt(5) + het_rates(6))* y(6)
         prod(106) = (rxt(6) +.500_r8*rxt(253) +rxt(108)*y(2))*y(7) &
                  +2.000_r8*rxt(79)*y(4)*y(3) +rxt(102)*y(5) +rxt(11)*y(8) +rxt(8) &
                 *y(11)
         loss(110) = (rxt(110)* y(1) + (rxt(108) +rxt(109))* y(2) +rxt(104)* y(5) &
                  +rxt(111)* y(8) +rxt(113)* y(20) +rxt(119)* y(21) +rxt(282)* y(27) &
                  +rxt(303)* y(35) +rxt(153)* y(60) +rxt(209)* y(86) +rxt(243)* y(99) &
                  + rxt(6) + rxt(253) + het_rates(7))* y(7)
         prod(110) = (rxt(105)*y(2) +rxt(106)*y(21) +rxt(107)*y(1) + &
                 2.000_r8*rxt(115)*y(8) +rxt(123)*y(13) +rxt(138)*y(133) + &
                 rxt(145)*y(57) +rxt(152)*y(60) +rxt(158)*y(53) +rxt(169)*y(64) + &
                 rxt(174)*y(66) +rxt(178)*y(69) +rxt(187)*y(72) +rxt(191)*y(74) + &
                 rxt(196)*y(84) +rxt(203)*y(86) +.920_r8*rxt(215)*y(80) + &
                 1.206_r8*rxt(221)*y(105) +.900_r8*rxt(228)*y(77) +rxt(231)*y(90) + &
                 .900_r8*rxt(239)*y(97) +rxt(247)*y(93) +rxt(281)*y(27) + &
                 rxt(302)*y(35))*y(6) + (rxt(10) +rxt(116)*y(2) +rxt(117)*y(20) + &
                 rxt(118)*y(21) +rxt(198)*y(84) +rxt(204)*y(86) +rxt(216)*y(80) + &
                 1.206_r8*rxt(222)*y(105) +rxt(226)*y(106) +rxt(232)*y(90) + &
                 rxt(246)*y(92))*y(8) + (rxt(13) +rxt(121) +rxt(120)*y(20))*y(10) &
                  + (rxt(7) +rxt(112))*y(11) + (rxt(185)*y(103) + &
                 .400_r8*rxt(225)*y(106))*y(20) + (.600_r8*rxt(22) +rxt(164))*y(102) &
                  + (rxt(23) +rxt(210))*y(104) +.700_r8*rxt(243)*y(99)*y(7) +rxt(9) &
                 *y(9) +.206_r8*rxt(223)*y(105)*y(21) +rxt(54)*y(32) +rxt(59)*y(38) &
                  +rxt(33)*y(106)
         loss(112) = (rxt(90)* y(1) +rxt(89)* y(2) +rxt(113)* y(7) +rxt(117)* y(8) &
                  +rxt(114)* y(9) +rxt(120)* y(10) +rxt(122)* y(12) + (rxt(125) + &
                 rxt(134))* y(14) +rxt(133)* y(15) +rxt(127)* y(16) + (rxt(129) + &
                 rxt(130))* y(17) +rxt(94)* y(18) + 2._r8*(rxt(92) +rxt(93))* y(20) &
                  +rxt(91)* y(21) +rxt(95)* y(22) + (rxt(278) +rxt(279))* y(27) &
                  +rxt(288)* y(30) +rxt(292)* y(31) +rxt(294)* y(32) +rxt(300)* y(35) &
                  +rxt(308)* y(36) +rxt(313)* y(39) +rxt(316)* y(40) +rxt(315)* y(44) &
                  +rxt(314)* y(46) +rxt(163)* y(50) +rxt(142)* y(51) +rxt(144)* y(54) &
                  +rxt(161)* y(55) +rxt(141)* y(56) +rxt(149)* y(58) +rxt(150)* y(59) &
                  +rxt(157)* y(61) +rxt(166)* y(62) +rxt(173)* y(63) +rxt(172)* y(65) &
                  +rxt(176)* y(67) +rxt(177)* y(68) +rxt(181)* y(70) +rxt(186)* y(71) &
                  +rxt(190)* y(73) +rxt(193)* y(75) +rxt(224)* y(76) +rxt(230)* y(78) &
                  +rxt(212)* y(79) +rxt(218)* y(81) +rxt(188)* y(82) +rxt(194)* y(83) &
                  +rxt(202)* y(85) +rxt(227)* y(87) +rxt(182)* y(88) +rxt(183)* y(89) &
                  +rxt(236)* y(91) +rxt(244)* y(92) +rxt(249)* y(94) +rxt(238)* y(95) &
                  +rxt(242)* y(96) +rxt(241)* y(98) +rxt(162)* y(101) +rxt(165) &
                 * y(102) +rxt(185)* y(103) +rxt(211)* y(104) +rxt(225)* y(106) &
                  +rxt(255)* y(112) + (rxt(256) +rxt(257))* y(113) +rxt(259)* y(115) &
                  +rxt(96)* y(129) +rxt(97)* y(130) +rxt(140)* y(131) +rxt(135) &
                 * y(132) + het_rates(20))* y(20)
         prod(112) = (rxt(85)*y(19) +rxt(99)*y(21) +.120_r8*rxt(143)*y(51) + &
                 .330_r8*rxt(167)*y(62) +.080_r8*rxt(189)*y(82) + &
                 .215_r8*rxt(195)*y(83) +.270_r8*rxt(213)*y(79) + &
                 .700_r8*rxt(245)*y(92))*y(1) + (rxt(98)*y(21) +rxt(101)*y(22) + &
                 rxt(128)*y(16) +rxt(289)*y(30) +rxt(290)*y(31) +rxt(309)*y(36) + &
                 rxt(310)*y(37))*y(2) + (.300_r8*rxt(134)*y(14) + &
                 .650_r8*rxt(140)*y(131) +.500_r8*rxt(149)*y(58) + &
                 .500_r8*rxt(176)*y(67) +.100_r8*rxt(202)*y(85))*y(20) &
                  + (rxt(77)*y(18) +rxt(80)*y(12) +2.000_r8*rxt(76)*y(49) + &
                 rxt(83)*y(129))*y(3) + (2.000_r8*rxt(86)*y(19) +rxt(106)*y(6) + &
                 rxt(118)*y(8) +rxt(274)*y(25))*y(21) + (.330_r8*rxt(24) + &
                 .330_r8*rxt(25))*y(83) +.500_r8*rxt(253)*y(7) +rxt(9)*y(9) +rxt(12) &
                 *y(10) +rxt(14)*y(14) +2.000_r8*rxt(47)*y(22) +rxt(51)*y(31) +rxt(57) &
                 *y(37) +rxt(44)*y(49) +rxt(27)*y(58) +rxt(21)*y(61) +rxt(28)*y(65) &
                  +rxt(20)*y(67) +rxt(29)*y(70) +rxt(41)*y(75) +rxt(40)*y(78) +rxt(32) &
                 *y(91) +rxt(43)*y(94) +rxt(42)*y(98)
         loss(103) = (rxt(116)* y(2) +rxt(115)* y(6) +rxt(111)* y(7) +rxt(126)* y(16) &
                  +rxt(117)* y(20) +rxt(118)* y(21) +rxt(151)* y(59) +rxt(168)* y(62) &
                  +rxt(214)* y(79) +rxt(216)* y(80) +rxt(198)* y(84) +rxt(204)* y(86) &
                  +rxt(184)* y(89) +rxt(232)* y(90) +rxt(246)* y(92) +rxt(222)* y(105) &
                  +rxt(226)* y(106) +rxt(258)* y(113) + rxt(10) + rxt(11) + rxt(252) &
                  + het_rates(8))* y(8)
         prod(103) = (rxt(114)*y(9) +rxt(165)*y(102) +.500_r8*rxt(211)*y(104) + &
                 rxt(294)*y(32))*y(20) + (rxt(109)*y(7) +rxt(293)*y(32) + &
                 rxt(311)*y(38))*y(2) + (rxt(7) +rxt(8) +rxt(112))*y(11) + (rxt(53) + &
                 rxt(295)*y(25))*y(32) +rxt(110)*y(7)*y(1) +rxt(12)*y(10) +rxt(58) &
                 *y(38) +.400_r8*rxt(22)*y(102)
         loss(81) = (rxt(114)* y(20) + rxt(9) + het_rates(9))* y(9)
         prod(81) = (rxt(318) +rxt(324) +rxt(329) +rxt(320)*y(30) +rxt(325)*y(30) + &
                 rxt(331)*y(30))*y(32) + (rxt(252) +rxt(126)*y(16) +rxt(151)*y(59) + &
                 rxt(184)*y(89) +rxt(258)*y(113))*y(8) + (2.000_r8*rxt(251) + &
                 2.000_r8*rxt(317) +2.000_r8*rxt(323) +2.000_r8*rxt(328))*y(11) &
                  + (rxt(319) +rxt(327) +rxt(330))*y(38) + (.500_r8*rxt(253) + &
                 rxt(113)*y(20))*y(7)
         loss(51) = (rxt(120)* y(20) + rxt(12) + rxt(13) + rxt(121) + het_rates(10)) &
                 * y(10)
         prod(51) =rxt(119)*y(21)*y(7)
         loss(37) = ( + rxt(7) + rxt(8) + rxt(112) + rxt(251) + rxt(317) + rxt(323) &
                  + rxt(328) + het_rates(11))* y(11)
         prod(37) =rxt(111)*y(8)*y(7)
         loss(101) = (rxt(123)* y(6) + 2._r8*(rxt(131) +rxt(132))* y(13) +rxt(124) &
                 * y(21) +rxt(147)* y(57) +rxt(155)* y(60) +rxt(171)* y(64) +rxt(180) &
                 * y(69) +rxt(219)* y(80) +rxt(200)* y(84) +rxt(206)* y(86) +rxt(234) &
                 * y(90) + het_rates(13))* y(13)
         prod(101) = (rxt(152)*y(6) +.900_r8*rxt(155)*y(13) +2.000_r8*rxt(156)*y(60) + &
                 rxt(201)*y(84) +rxt(207)*y(86) +rxt(220)*y(80) +rxt(235)*y(90))*y(60) &
                  + (rxt(122)*y(12) +rxt(125)*y(14) +.700_r8*rxt(134)*y(14) + &
                 rxt(144)*y(54))*y(20) + (rxt(80)*y(3) +rxt(276)*y(25))*y(12) &
                  +.310_r8*rxt(167)*y(62)*y(1) +rxt(19)*y(59) +rxt(21)*y(61) +rxt(30) &
                 *y(68) +.300_r8*rxt(26)*y(82) +.400_r8*rxt(22)*y(102)
         loss(52) = ((rxt(125) +rxt(134))* y(20) + rxt(14) + het_rates(14))* y(14)
         prod(52) =rxt(124)*y(21)*y(13)
         loss(33) = (rxt(83)* y(3) +rxt(96)* y(20) + het_rates(129))* y(129)
         prod(33) = 0._r8
         loss(21) = (rxt(97)* y(20) + het_rates(130))* y(130)
         prod(21) = 0._r8
         loss(114) = (rxt(128)* y(2) +rxt(126)* y(8) +rxt(127)* y(20) +rxt(136)* y(21) &
                  +rxt(275)* y(25) +rxt(298)* y(34) + rxt(15) + rxt(16) &
                  + het_rates(16))* y(16)
         prod(114) = (rxt(123)*y(6) +2.000_r8*rxt(131)*y(13) +rxt(132)*y(13) + &
                 .700_r8*rxt(147)*y(57) +rxt(155)*y(60) +rxt(171)*y(64) + &
                 .800_r8*rxt(180)*y(69) +.880_r8*rxt(200)*y(84) + &
                 2.000_r8*rxt(206)*y(86) +1.200_r8*rxt(219)*y(80) + &
                 .700_r8*rxt(234)*y(90))*y(13) + (rxt(174)*y(66) +rxt(178)*y(69) + &
                 .500_r8*rxt(187)*y(72) +.250_r8*rxt(196)*y(84) +rxt(203)*y(86) + &
                 .510_r8*rxt(215)*y(80) +.072_r8*rxt(221)*y(105) + &
                 .100_r8*rxt(228)*y(77))*y(6) + (rxt(133)*y(15) + &
                 .300_r8*rxt(134)*y(14) +.500_r8*rxt(142)*y(51) + &
                 .500_r8*rxt(157)*y(61) +.800_r8*rxt(161)*y(55) +rxt(165)*y(102) + &
                 .500_r8*rxt(211)*y(104))*y(20) + (rxt(143)*y(51) + &
                 .540_r8*rxt(167)*y(62) +.800_r8*rxt(189)*y(82) + &
                 .700_r8*rxt(195)*y(83) +.600_r8*rxt(213)*y(79))*y(1) &
                  + (.250_r8*rxt(198)*y(84) +rxt(204)*y(86) +.600_r8*rxt(216)*y(80) + &
                 .072_r8*rxt(222)*y(105))*y(8) + (.250_r8*rxt(201)*y(84) + &
                 rxt(207)*y(86) +.600_r8*rxt(220)*y(80))*y(60) + (rxt(81)*y(12) + &
                 rxt(82)*y(12))*y(3) + (.670_r8*rxt(24) +.670_r8*rxt(25))*y(83) &
                  +rxt(14)*y(14) +.008_r8*rxt(223)*y(105)*y(21) +2.000_r8*rxt(160) &
                 *y(52) +rxt(36)*y(55) +rxt(20)*y(67) +rxt(29)*y(70) +.100_r8*rxt(40) &
                 *y(78) +.690_r8*rxt(34)*y(81) +2.000_r8*rxt(208)*y(86)*y(86) +rxt(35) &
                 *y(88) +rxt(33)*y(106) +rxt(137)*y(133)
         loss(84) = (rxt(85)* y(1) + (rxt(86) +rxt(87) +rxt(88))* y(21) + rxt(84) &
                  + het_rates(19))* y(19)
         prod(84) = (rxt(94)*y(18) +rxt(130)*y(17) +rxt(89)*y(2) +rxt(127)*y(16)) &
                 *y(20) + (rxt(44) +2.000_r8*rxt(46))*y(49) +rxt(81)*y(12)*y(3) &
                  +rxt(14)*y(14) +2.000_r8*rxt(15)*y(16) +rxt(271)*y(25)*y(18) &
                  +rxt(52)*y(30)
         loss(107) = (rxt(99)* y(1) +rxt(98)* y(2) +rxt(106)* y(6) +rxt(119)* y(7) &
                  +rxt(118)* y(8) +rxt(124)* y(13) +rxt(136)* y(16) + (rxt(86) + &
                 rxt(87) +rxt(88))* y(19) +rxt(91)* y(20) + 2._r8*rxt(100)* y(21) &
                  + (rxt(273) +rxt(274))* y(25) +rxt(280)* y(27) +rxt(297)* y(34) &
                  +rxt(301)* y(35) +rxt(146)* y(57) +rxt(154)* y(60) +rxt(170)* y(64) &
                  +rxt(175)* y(66) +rxt(179)* y(69) +rxt(192)* y(74) +rxt(229)* y(77) &
                  +rxt(217)* y(80) +rxt(199)* y(84) +rxt(205)* y(86) +rxt(233)* y(90) &
                  +rxt(248)* y(93) +rxt(240)* y(97) +rxt(223)* y(105) +rxt(139) &
                 * y(133) + rxt(261) + het_rates(21))* y(21)
         prod(107) = (rxt(129)*y(17) +rxt(313)*y(39) +rxt(316)*y(40) +rxt(90)*y(1) + &
                 rxt(95)*y(22) +rxt(96)*y(129) +rxt(97)*y(130) +rxt(117)*y(8) + &
                 rxt(133)*y(15) +rxt(135)*y(132) +.350_r8*rxt(140)*y(131) + &
                 .250_r8*rxt(142)*y(51) +rxt(161)*y(55) +rxt(162)*y(101) + &
                 rxt(163)*y(50) +rxt(182)*y(88) +.200_r8*rxt(202)*y(85) + &
                 .500_r8*rxt(211)*y(104) +rxt(225)*y(106) +.250_r8*rxt(238)*y(95) + &
                 .500_r8*rxt(257)*y(113) +rxt(278)*y(27) +rxt(300)*y(35))*y(20) &
                  + (rxt(123)*y(13) +rxt(138)*y(133) +rxt(145)*y(57) +rxt(169)*y(64) + &
                 rxt(174)*y(66) +rxt(187)*y(72) +.470_r8*rxt(196)*y(84) + &
                 rxt(215)*y(80) +.794_r8*rxt(221)*y(105) +.900_r8*rxt(228)*y(77) + &
                 rxt(231)*y(90) +.900_r8*rxt(239)*y(97) +rxt(247)*y(93))*y(6) &
                  + (2.000_r8*rxt(131)*y(13) +rxt(147)*y(57) +.900_r8*rxt(155)*y(60) + &
                 rxt(171)*y(64) +.300_r8*rxt(180)*y(69) +.730_r8*rxt(200)*y(84) + &
                 rxt(206)*y(86) +rxt(219)*y(80) +.800_r8*rxt(234)*y(90))*y(13) &
                  + (.120_r8*rxt(143)*y(51) +.190_r8*rxt(167)*y(62) + &
                 .060_r8*rxt(189)*y(82) +.275_r8*rxt(195)*y(83) + &
                 .060_r8*rxt(213)*y(79) +rxt(245)*y(92))*y(1) + (rxt(126)*y(16) + &
                 .470_r8*rxt(198)*y(84) +rxt(216)*y(80) +.794_r8*rxt(222)*y(105) + &
                 rxt(226)*y(106) +rxt(232)*y(90))*y(8) + (rxt(128)*y(2) + &
                 rxt(275)*y(25) +rxt(298)*y(34))*y(16) + (.470_r8*rxt(201)*y(84) + &
                 rxt(220)*y(80) +rxt(235)*y(90))*y(60) + (rxt(77)*y(18) + &
                 rxt(81)*y(12))*y(3) + (rxt(13) +rxt(121))*y(10) + (rxt(101)*y(2) + &
                 rxt(272)*y(25))*y(22) + (rxt(159) +rxt(160))*y(52) &
                  + (.670_r8*rxt(24) +.670_r8*rxt(25))*y(83) +.700_r8*rxt(243)*y(99) &
                 *y(7) +rxt(84)*y(19) +.794_r8*rxt(223)*y(105)*y(21) +rxt(312)*y(39) &
                 *y(25) +2.000_r8*rxt(36)*y(55) +1.200_r8*rxt(148)*y(57)*y(57) &
                  +rxt(27)*y(58) +rxt(19)*y(59) +rxt(28)*y(65) +rxt(20)*y(67) &
                  +.900_r8*rxt(40)*y(78) +rxt(34)*y(81) +rxt(35)*y(88) +rxt(31)*y(89) &
                  +rxt(43)*y(94) +.560_r8*rxt(38)*y(100) +2.000_r8*rxt(39)*y(101) &
                  +rxt(33)*y(106) +rxt(137)*y(133)
         loss(70) = (rxt(101)* y(2) +rxt(95)* y(20) +rxt(272)* y(25) + rxt(47) &
                  + het_rates(22))* y(22)
         prod(70) = (.500_r8*rxt(261) +rxt(100)*y(21))*y(21) +rxt(93)*y(20)*y(20)
         loss(111) = (rxt(76)* y(3) + rxt(44) + rxt(45) + rxt(46) + het_rates(49)) &
                 * y(49)
         prod(111) = (rxt(94)*y(18) +rxt(122)*y(12) +rxt(313)*y(39) +rxt(314)*y(46) + &
                 rxt(315)*y(44) +rxt(316)*y(40) +rxt(91)*y(21) +rxt(92)*y(20) + &
                 rxt(95)*y(22) +rxt(114)*y(9) +rxt(120)*y(10) +rxt(125)*y(14) + &
                 rxt(127)*y(16) +rxt(134)*y(14) +rxt(135)*y(132) +rxt(141)*y(56) + &
                 rxt(144)*y(54) +rxt(150)*y(59) +rxt(157)*y(61) +rxt(172)*y(65) + &
                 rxt(173)*y(63) +rxt(176)*y(67) +rxt(177)*y(68) +rxt(181)*y(70) + &
                 rxt(183)*y(89) +.500_r8*rxt(194)*y(83) +rxt(236)*y(91) + &
                 rxt(237)*y(91) +rxt(259)*y(115) +rxt(288)*y(30) +rxt(292)*y(31) + &
                 rxt(308)*y(36))*y(20) + (rxt(321)*y(31) +rxt(322)*y(37) + &
                 rxt(326)*y(31) +rxt(332)*y(31) +rxt(333)*y(37))*y(30) +rxt(88)*y(21) &
                 *y(19)
         loss(113) = (rxt(270)* y(1) +rxt(276)* y(12) +rxt(275)* y(16) +rxt(271) &
                 * y(18) + (rxt(273) +rxt(274))* y(21) +rxt(272)* y(22) +rxt(291) &
                 * y(31) +rxt(295)* y(32) +rxt(312)* y(39) + het_rates(25))* y(25)
         prod(113) = (rxt(277)*y(2) +rxt(278)*y(20) +rxt(281)*y(6) + &
                 2.000_r8*rxt(283)*y(27) +rxt(285)*y(27) +rxt(305)*y(35))*y(27) &
                  + (3.000_r8*rxt(262)*y(41) +2.000_r8*rxt(263)*y(42) + &
                 3.000_r8*rxt(264)*y(43) +rxt(265)*y(44) +4.000_r8*rxt(266)*y(45)) &
                 *y(3) + (rxt(313)*y(39) +3.000_r8*rxt(314)*y(46) +rxt(315)*y(44) + &
                 rxt(288)*y(30))*y(20) + (rxt(52) +rxt(289)*y(2))*y(30) &
                  +2.000_r8*rxt(48)*y(26) +2.000_r8*rxt(50)*y(29) +rxt(51)*y(31) &
                  +rxt(53)*y(32) +rxt(55)*y(33)
         loss(29) = ( + rxt(48) + het_rates(26))* y(26)
         prod(29) = (rxt(320)*y(32) +rxt(321)*y(31) +rxt(325)*y(32) +rxt(326)*y(31) + &
                 rxt(331)*y(32) +rxt(332)*y(31))*y(30) +rxt(295)*y(32)*y(25) &
                  +rxt(284)*y(27)*y(27)
         loss(104) = (rxt(277)* y(2) +rxt(281)* y(6) +rxt(282)* y(7) + (rxt(278) + &
                 rxt(279))* y(20) +rxt(280)* y(21) + 2._r8*(rxt(283) +rxt(284) + &
                 rxt(285) +rxt(286))* y(27) + (rxt(304) +rxt(305) +rxt(306))* y(35) &
                  + het_rates(27))* y(27)
         prod(104) = (rxt(270)*y(1) +rxt(274)*y(21) +rxt(291)*y(31))*y(25) &
                  + (rxt(290)*y(31) +rxt(293)*y(32))*y(2) +rxt(292)*y(31)*y(20) &
                  +rxt(49)*y(28) +2.000_r8*rxt(287)*y(29) +rxt(54)*y(32)
         loss(27) = ( + rxt(49) + het_rates(28))* y(28)
         prod(27) = (rxt(285)*y(27) +rxt(304)*y(35))*y(27)
         loss(17) = ( + rxt(50) + rxt(287) + het_rates(29))* y(29)
         prod(17) =rxt(286)*y(27)*y(27)
         loss(102) = (rxt(289)* y(2) +rxt(288)* y(20) + (rxt(321) +rxt(326) +rxt(332)) &
                 * y(31) + (rxt(320) +rxt(325) +rxt(331))* y(32) + (rxt(322) + &
                 rxt(333))* y(37) + rxt(52) + het_rates(30))* y(30)
         prod(102) = (rxt(271)*y(18) +rxt(276)*y(12) +2.000_r8*rxt(312)*y(39) + &
                 rxt(272)*y(22) +rxt(273)*y(21) +rxt(275)*y(16) +rxt(291)*y(31))*y(25) &
                  +rxt(279)*y(27)*y(20)
         loss(83) = (rxt(290)* y(2) +rxt(292)* y(20) +rxt(291)* y(25) + (rxt(321) + &
                 rxt(326) +rxt(332))* y(30) + rxt(51) + het_rates(31))* y(31)
         prod(83) = (rxt(318) +rxt(324) +rxt(329) +rxt(294)*y(20))*y(32) &
                  +rxt(280)*y(27)*y(21)
         loss(85) = (rxt(293)* y(2) +rxt(294)* y(20) +rxt(295)* y(25) + (rxt(320) + &
                 rxt(325) +rxt(331))* y(30) + rxt(53) + rxt(54) + rxt(318) + rxt(324) &
                  + rxt(329) + het_rates(32))* y(32)
         prod(85) =rxt(282)*y(27)*y(7)
         loss(34) = ( + rxt(55) + het_rates(33))* y(33)
         prod(34) = (rxt(322)*y(37) +rxt(333)*y(37))*y(30) +rxt(306)*y(35)*y(27)
         loss(93) = (rxt(296)* y(1) +rxt(298)* y(16) +rxt(297)* y(21) + het_rates(34)) &
                 * y(34)
         prod(93) = (rxt(56) +rxt(299)*y(2) +rxt(300)*y(20) +rxt(302)*y(6) + &
                 rxt(304)*y(27) +rxt(305)*y(27) +2.000_r8*rxt(307)*y(35))*y(35) &
                  + (rxt(267)*y(40) +rxt(268)*y(48) +rxt(269)*y(47))*y(3) &
                  + (rxt(316)*y(40) +rxt(308)*y(36))*y(20) +rxt(309)*y(36)*y(2) &
                  +rxt(55)*y(33) +rxt(57)*y(37) +rxt(58)*y(38)
         loss(109) = (rxt(299)* y(2) +rxt(302)* y(6) +rxt(303)* y(7) +rxt(300)* y(20) &
                  +rxt(301)* y(21) + (rxt(304) +rxt(305) +rxt(306))* y(27) &
                  + 2._r8*rxt(307)* y(35) + rxt(56) + het_rates(35))* y(35)
         prod(109) = (rxt(310)*y(37) +rxt(311)*y(38))*y(2) +rxt(296)*y(34)*y(1) &
                  +rxt(59)*y(38)
         loss(61) = (rxt(309)* y(2) +rxt(308)* y(20) + het_rates(36))* y(36)
         prod(61) = (rxt(297)*y(21) +rxt(298)*y(16))*y(34)
         loss(78) = (rxt(310)* y(2) + (rxt(322) +rxt(333))* y(30) + rxt(57) &
                  + het_rates(37))* y(37)
         prod(78) = (rxt(319) +rxt(327) +rxt(330))*y(38) +rxt(301)*y(35)*y(21)
         loss(64) = (rxt(311)* y(2) + rxt(58) + rxt(59) + rxt(319) + rxt(327) &
                  + rxt(330) + het_rates(38))* y(38)
         prod(64) =rxt(303)*y(35)*y(7)
         loss(66) = (rxt(133)* y(20) + het_rates(15))* y(15)
         prod(66) = (rxt(132)*y(13) +.300_r8*rxt(147)*y(57) +.500_r8*rxt(180)*y(69) + &
                 .250_r8*rxt(200)*y(84) +.250_r8*rxt(219)*y(80) + &
                 .300_r8*rxt(234)*y(90))*y(13)
         loss(36) = (rxt(163)* y(20) + het_rates(50))* y(50)
         prod(36) = (.200_r8*rxt(147)*y(13) +.400_r8*rxt(148)*y(57))*y(57)
         loss(43) = (rxt(143)* y(1) +rxt(142)* y(20) + het_rates(51))* y(51)
         prod(43) = 0._r8
         loss(30) = ( + rxt(159) + rxt(160) + het_rates(52))* y(52)
         prod(30) =rxt(158)*y(53)*y(6)
         loss(47) = (rxt(158)* y(6) + het_rates(53))* y(53)
         prod(47) =.750_r8*rxt(142)*y(51)*y(20)
         loss(68) = (rxt(144)* y(20) + het_rates(54))* y(54)
         prod(68) = (.250_r8*rxt(167)*y(62) +.200_r8*rxt(213)*y(79))*y(1) &
                  + (.250_r8*rxt(154)*y(60) +.250_r8*rxt(205)*y(86))*y(21) &
                  +.100_r8*rxt(155)*y(60)*y(13)
         loss(67) = (rxt(161)* y(20) + rxt(36) + het_rates(55))* y(55)
         prod(67) = (.530_r8*rxt(196)*y(6) +.530_r8*rxt(198)*y(8) + &
                 .260_r8*rxt(200)*y(13) +.530_r8*rxt(201)*y(60))*y(84) &
                  + (.250_r8*rxt(231)*y(6) +.250_r8*rxt(232)*y(8) + &
                 .100_r8*rxt(234)*y(13) +.250_r8*rxt(235)*y(60))*y(90) +rxt(159)*y(52)
         loss(22) = (rxt(141)* y(20) + het_rates(56))* y(56)
         prod(22) = 0._r8
         loss(74) = (rxt(145)* y(6) +rxt(147)* y(13) +rxt(146)* y(21) + 2._r8*rxt(148) &
                 * y(57) + het_rates(57))* y(57)
         prod(74) = (rxt(141)*y(56) +.500_r8*rxt(149)*y(58))*y(20) +rxt(37)*y(73)
         loss(38) = (rxt(149)* y(20) + rxt(27) + het_rates(58))* y(58)
         prod(38) =rxt(146)*y(57)*y(21)
         loss(87) = (rxt(151)* y(8) +rxt(150)* y(20) + rxt(19) + het_rates(59))* y(59)
         prod(87) = (rxt(145)*y(57) +.270_r8*rxt(169)*y(64) +rxt(174)*y(66) + &
                 rxt(187)*y(72) +rxt(191)*y(74) +.400_r8*rxt(228)*y(77))*y(6) &
                  + (.500_r8*rxt(167)*y(62) +.040_r8*rxt(189)*y(82))*y(1) &
                  + (.500_r8*rxt(149)*y(58) +rxt(163)*y(50))*y(20) &
                  + (.800_r8*rxt(147)*y(13) +1.600_r8*rxt(148)*y(57))*y(57) +rxt(27) &
                 *y(58) +rxt(20)*y(67) +rxt(41)*y(75) +.400_r8*rxt(40)*y(78)
         loss(100) = (rxt(152)* y(6) +rxt(153)* y(7) +rxt(155)* y(13) +rxt(154)* y(21) &
                  + 2._r8*rxt(156)* y(60) +rxt(220)* y(80) +rxt(201)* y(84) +rxt(235) &
                 * y(90) + het_rates(60))* y(60)
         prod(100) = (rxt(178)*y(69) +rxt(191)*y(74) +.530_r8*rxt(196)*y(84) + &
                 rxt(203)*y(86))*y(6) + (rxt(151)*y(59) +rxt(184)*y(89) + &
                 .530_r8*rxt(198)*y(84) +rxt(204)*y(86))*y(8) &
                  + (.300_r8*rxt(180)*y(69) +.260_r8*rxt(200)*y(84) +rxt(206)*y(86)) &
                 *y(13) + (rxt(150)*y(59) +.500_r8*rxt(157)*y(61) +rxt(183)*y(89)) &
                 *y(20) + (.670_r8*rxt(24) +.670_r8*rxt(25))*y(83) &
                  + (.600_r8*rxt(22) +rxt(164))*y(102) +.530_r8*rxt(201)*y(84)*y(60) &
                  +rxt(30)*y(68) +rxt(29)*y(70) +rxt(37)*y(73) +rxt(41)*y(75) &
                  +.300_r8*rxt(26)*y(82) +2.000_r8*rxt(208)*y(86)*y(86) +rxt(35)*y(88) &
                  +rxt(31)*y(89) +.130_r8*rxt(38)*y(100)
         loss(57) = (rxt(157)* y(20) + rxt(21) + het_rates(61))* y(61)
         prod(57) = (.750_r8*rxt(154)*y(60) +.750_r8*rxt(205)*y(86))*y(21)
         loss(86) = (rxt(167)* y(1) +rxt(168)* y(8) +rxt(166)* y(20) + het_rates(62)) &
                 * y(62)
         prod(86) =.070_r8*rxt(213)*y(79)*y(1) +.700_r8*rxt(26)*y(82)
         loss(23) = (rxt(173)* y(20) + het_rates(63))* y(63)
         prod(23) = 0._r8
         loss(80) = (rxt(169)* y(6) +rxt(171)* y(13) +rxt(170)* y(21) + het_rates(64)) &
                 * y(64)
         prod(80) = (rxt(172)*y(65) +rxt(173)*y(63))*y(20)
         loss(45) = (rxt(172)* y(20) + rxt(28) + het_rates(65))* y(65)
         prod(45) =rxt(170)*y(64)*y(21)
         loss(77) = (rxt(174)* y(6) +rxt(175)* y(21) + het_rates(66))* y(66)
         prod(77) = (rxt(166)*y(62) +.500_r8*rxt(176)*y(67))*y(20)
         loss(62) = (rxt(176)* y(20) + rxt(20) + het_rates(67))* y(67)
         prod(62) =rxt(175)*y(66)*y(21)
         loss(75) = (rxt(177)* y(20) + rxt(30) + het_rates(68))* y(68)
         prod(75) = (.820_r8*rxt(169)*y(64) +.500_r8*rxt(187)*y(72) + &
                 .250_r8*rxt(228)*y(77) +.100_r8*rxt(247)*y(93))*y(6) &
                  +.820_r8*rxt(171)*y(64)*y(13) +.820_r8*rxt(28)*y(65) &
                  +.250_r8*rxt(40)*y(78) +.100_r8*rxt(43)*y(94)
         loss(88) = (rxt(178)* y(6) +rxt(180)* y(13) +rxt(179)* y(21) + het_rates(69)) &
                 * y(69)
         prod(88) = (rxt(177)*y(68) +rxt(181)*y(70))*y(20)
         loss(46) = (rxt(181)* y(20) + rxt(29) + het_rates(70))* y(70)
         prod(46) =rxt(179)*y(69)*y(21)
         loss(18) = (rxt(186)* y(20) + het_rates(71))* y(71)
         prod(18) = 0._r8
         loss(39) = (rxt(187)* y(6) + het_rates(72))* y(72)
         prod(39) =rxt(186)*y(71)*y(20)
         loss(19) = (rxt(224)* y(20) + het_rates(76))* y(76)
         prod(19) = 0._r8
         loss(73) = (rxt(228)* y(6) +rxt(229)* y(21) + het_rates(77))* y(77)
         prod(73) = (rxt(224)*y(76) +rxt(230)*y(78))*y(20)
         loss(71) = (rxt(230)* y(20) + rxt(40) + het_rates(78))* y(78)
         prod(71) =rxt(229)*y(77)*y(21)
         loss(53) = (rxt(190)* y(20) + rxt(37) + het_rates(73))* y(73)
         prod(53) =.800_r8*rxt(228)*y(77)*y(6) +.800_r8*rxt(40)*y(78)
         loss(72) = (rxt(191)* y(6) +rxt(192)* y(21) + het_rates(74))* y(74)
         prod(72) = (rxt(190)*y(73) +rxt(193)*y(75))*y(20)
         loss(40) = (rxt(193)* y(20) + rxt(41) + het_rates(75))* y(75)
         prod(40) =rxt(192)*y(74)*y(21)
         loss(79) = (rxt(213)* y(1) +rxt(214)* y(8) +rxt(212)* y(20) + het_rates(79)) &
                 * y(79)
         prod(79) = 0._r8
         loss(98) = (rxt(215)* y(6) +rxt(216)* y(8) +rxt(219)* y(13) +rxt(217)* y(21) &
                  +rxt(220)* y(60) + het_rates(80))* y(80)
         prod(98) = (rxt(212)*y(79) +.200_r8*rxt(218)*y(81))*y(20)
         loss(63) = (rxt(218)* y(20) + rxt(34) + het_rates(81))* y(81)
         prod(63) =rxt(217)*y(80)*y(21)
         loss(96) = (rxt(189)* y(1) +rxt(188)* y(20) + rxt(26) + het_rates(82))* y(82)
         prod(96) = (.320_r8*rxt(215)*y(6) +.350_r8*rxt(216)*y(8) + &
                 .260_r8*rxt(219)*y(13) +.350_r8*rxt(220)*y(60))*y(80) &
                  + (.039_r8*rxt(221)*y(6) +.039_r8*rxt(222)*y(8) + &
                 .039_r8*rxt(223)*y(21))*y(105) + (.200_r8*rxt(213)*y(79) + &
                 rxt(245)*y(92))*y(1) +rxt(247)*y(93)*y(6) +.402_r8*rxt(34)*y(81) &
                  +rxt(43)*y(94)
         loss(92) = (rxt(195)* y(1) +rxt(194)* y(20) + rxt(24) + rxt(25) &
                  + het_rates(83))* y(83)
         prod(92) = (.230_r8*rxt(215)*y(6) +.250_r8*rxt(216)*y(8) + &
                 .190_r8*rxt(219)*y(13) +.250_r8*rxt(220)*y(60))*y(80) &
                  + (.167_r8*rxt(221)*y(6) +.167_r8*rxt(222)*y(8) + &
                 .167_r8*rxt(223)*y(21))*y(105) + (.400_r8*rxt(213)*y(79) + &
                 rxt(245)*y(92))*y(1) +rxt(247)*y(93)*y(6) +.288_r8*rxt(34)*y(81) &
                  +rxt(43)*y(94)
         loss(97) = ((rxt(196) +rxt(197))* y(6) +rxt(198)* y(8) +rxt(200)* y(13) &
                  +rxt(199)* y(21) +rxt(201)* y(60) + het_rates(84))* y(84)
         prod(97) = (rxt(188)*y(82) +.500_r8*rxt(194)*y(83) +.200_r8*rxt(202)*y(85)) &
                 *y(20)
         loss(41) = (rxt(202)* y(20) + het_rates(85))* y(85)
         prod(41) =rxt(199)*y(84)*y(21)
         loss(99) = (rxt(203)* y(6) +rxt(209)* y(7) +rxt(204)* y(8) +rxt(206)* y(13) &
                  +rxt(205)* y(21) +rxt(207)* y(60) + 2._r8*rxt(208)* y(86) &
                  + het_rates(86))* y(86)
         prod(99) = (.330_r8*rxt(24) +.330_r8*rxt(25) +.500_r8*rxt(194)*y(20))*y(83) &
                  + (rxt(23) +rxt(210))*y(104) +.200_r8*rxt(213)*y(79)*y(1) &
                  +.500_r8*rxt(202)*y(85)*y(20)
         loss(44) = (rxt(227)* y(20) + het_rates(87))* y(87)
         prod(44) = (.370_r8*rxt(215)*y(6) +.400_r8*rxt(216)*y(8) + &
                 .300_r8*rxt(219)*y(13) +.400_r8*rxt(220)*y(60))*y(80) &
                  + (rxt(225)*y(20) +rxt(226)*y(8))*y(106)
         loss(91) = (rxt(182)* y(20) + rxt(35) + het_rates(88))* y(88)
         prod(91) = (.220_r8*rxt(196)*y(6) +.220_r8*rxt(198)*y(8) + &
                 .230_r8*rxt(200)*y(13) +.220_r8*rxt(201)*y(60))*y(84) &
                  + (.250_r8*rxt(231)*y(6) +.250_r8*rxt(232)*y(8) + &
                 .100_r8*rxt(234)*y(13) +.250_r8*rxt(235)*y(60))*y(90) &
                  + (.500_r8*rxt(176)*y(67) +.500_r8*rxt(211)*y(104))*y(20) &
                  +.200_r8*rxt(180)*y(69)*y(13)
         loss(94) = (rxt(184)* y(8) +rxt(183)* y(20) + rxt(31) + het_rates(89))* y(89)
         prod(94) = (.250_r8*rxt(196)*y(6) +.250_r8*rxt(198)*y(8) + &
                 .240_r8*rxt(200)*y(13) +.250_r8*rxt(201)*y(60))*y(84) &
                  + (.250_r8*rxt(231)*y(6) +.250_r8*rxt(232)*y(8) + &
                 .100_r8*rxt(234)*y(13) +.250_r8*rxt(235)*y(60))*y(90) &
                  + (.950_r8*rxt(189)*y(82) +.800_r8*rxt(195)*y(83))*y(1) &
                  + (rxt(182)*y(88) +rxt(185)*y(103))*y(20) +.450_r8*rxt(239)*y(97) &
                 *y(6) +.500_r8*rxt(180)*y(69)*y(13) +.450_r8*rxt(42)*y(98) &
                  +.180_r8*rxt(38)*y(100)
         loss(95) = (rxt(231)* y(6) +rxt(232)* y(8) +rxt(234)* y(13) +rxt(233)* y(21) &
                  +rxt(235)* y(60) + het_rates(90))* y(90)
         prod(95) = (.800_r8*rxt(218)*y(81) +rxt(227)*y(87) +rxt(236)*y(91))*y(20)
         loss(42) = ((rxt(236) +rxt(237))* y(20) + rxt(32) + het_rates(91))* y(91)
         prod(42) = (rxt(223)*y(105) +rxt(233)*y(90))*y(21)
         loss(69) = (rxt(245)* y(1) +rxt(246)* y(8) +rxt(244)* y(20) + het_rates(92)) &
                 * y(92)
         prod(69) = 0._r8
         loss(90) = (rxt(247)* y(6) +rxt(248)* y(21) + het_rates(93))* y(93)
         prod(90) = (rxt(244)*y(92) +rxt(249)*y(94))*y(20) +rxt(246)*y(92)*y(8)
         loss(54) = (rxt(249)* y(20) + rxt(43) + het_rates(94))* y(94)
         prod(54) =rxt(248)*y(93)*y(21)
         loss(25) = (rxt(238)* y(20) + het_rates(95))* y(95)
         prod(25) = 0._r8
         loss(26) = (rxt(242)* y(20) + het_rates(96))* y(96)
         prod(26) =.250_r8*rxt(238)*y(95)*y(20)
         loss(60) = (rxt(239)* y(6) +rxt(240)* y(21) + het_rates(97))* y(97)
         prod(60) = (.700_r8*rxt(238)*y(95) +rxt(241)*y(98))*y(20)
         loss(48) = (rxt(241)* y(20) + rxt(42) + het_rates(98))* y(98)
         prod(48) =rxt(240)*y(97)*y(21)
         loss(31) = (rxt(243)* y(7) + het_rates(99))* y(99)
         prod(31) =rxt(242)*y(96)*y(20)
         loss(58) = ( + rxt(38) + het_rates(100))* y(100)
         prod(58) =.900_r8*rxt(239)*y(97)*y(6) +.700_r8*rxt(243)*y(99)*y(7) &
                  +.900_r8*rxt(42)*y(98)
         loss(59) = (rxt(162)* y(20) + rxt(39) + het_rates(101))* y(101)
         prod(59) = (.250_r8*rxt(231)*y(6) +.250_r8*rxt(232)*y(8) + &
                 .100_r8*rxt(234)*y(13) +.250_r8*rxt(235)*y(60))*y(90) &
                  + (.650_r8*rxt(140)*y(131) +.200_r8*rxt(161)*y(55))*y(20) &
                  +.450_r8*rxt(239)*y(97)*y(6) +.450_r8*rxt(42)*y(98) +.130_r8*rxt(38) &
                 *y(100)
         loss(55) = (rxt(165)* y(20) + rxt(22) + rxt(164) + het_rates(102))* y(102)
         prod(55) =rxt(153)*y(60)*y(7)
         loss(49) = (rxt(185)* y(20) + het_rates(103))* y(103)
         prod(49) =.100_r8*rxt(228)*y(77)*y(6) +rxt(168)*y(62)*y(8)
         loss(65) = (rxt(211)* y(20) + rxt(23) + rxt(210) + het_rates(104))* y(104)
         prod(65) =rxt(209)*y(86)*y(7)
         loss(89) = (rxt(221)* y(6) +rxt(222)* y(8) +rxt(223)* y(21) + het_rates(105)) &
                 * y(105)
         prod(89) =rxt(214)*y(79)*y(8)
         loss(82) = (rxt(226)* y(8) +rxt(225)* y(20) + rxt(33) + het_rates(106)) &
                 * y(106)
         prod(82) = (.800_r8*rxt(197)*y(84) +.080_r8*rxt(215)*y(80) + &
                 .794_r8*rxt(221)*y(105))*y(6) + (.794_r8*rxt(222)*y(8) + &
                 .794_r8*rxt(223)*y(21))*y(105)
         loss(24) = (rxt(255)* y(20) + het_rates(112))* y(112)
         prod(24) = (rxt(256)*y(20) +.500_r8*rxt(257)*y(20) +rxt(258)*y(8))*y(113)
         loss(35) = (rxt(258)* y(8) + (rxt(256) +rxt(257))* y(20) + het_rates(113)) &
                 * y(113)
         prod(35) = 0._r8
         loss(1) = ( + het_rates(114))* y(114)
         prod(1) =rxt(255)*y(112)*y(20)
         loss(20) = (rxt(259)* y(20) + het_rates(115))* y(115)
         prod(20) = 0._r8
         loss(2) = ( + het_rates(116))* y(116)
         prod(2) = 0._r8
         loss(3) = ( + het_rates(117))* y(117)
         prod(3) = 0._r8
         loss(4) = ( + het_rates(111))* y(111)
         prod(4) = 0._r8
         loss(5) = ( + rxt(254) + het_rates(107))* y(107)
         prod(5) = 0._r8
         loss(6) = ( + het_rates(108))* y(108)
         prod(6) =rxt(254)*y(107)
         loss(7) = ( + rxt(260) + het_rates(109))* y(109)
         prod(7) = 0._r8
         loss(8) = ( + het_rates(110))* y(110)
         prod(8) =rxt(260)*y(109)
         loss(28) = (rxt(140)* y(20) + het_rates(131))* y(131)
         prod(28) = 0._r8
         loss(50) = (rxt(135)* y(20) + het_rates(132))* y(132)
         prod(50) = (rxt(138)*y(6) +rxt(139)*y(21))*y(133) +.500_r8*rxt(143)*y(51) &
                 *y(1) +.350_r8*rxt(140)*y(131)*y(20)
         loss(56) = (rxt(138)* y(6) +rxt(139)* y(21) + rxt(137) + het_rates(133)) &
                 * y(133)
         prod(56) =rxt(136)*y(21)*y(16)
         loss(9) = ( + het_rates(118))* y(118)
         prod(9) = 0._r8
         loss(10) = ( + het_rates(119))* y(119)
         prod(10) = 0._r8
         loss(11) = ( + het_rates(120))* y(120)
         prod(11) = 0._r8
         loss(12) = ( + het_rates(121))* y(121)
         prod(12) = 0._r8
         loss(13) = ( + het_rates(122))* y(122)
         prod(13) = 0._r8
         loss(14) = ( + het_rates(123))* y(123)
         prod(14) = 0._r8
         loss(15) = ( + het_rates(124))* y(124)
         prod(15) = 0._r8
         loss(16) = ( + het_rates(125))* y(125)
         prod(16) = 0._r8

      end subroutine imp_prod_loss

      end module mo_prod_loss
